package pkg

// FrameItemParam 帧内容字段 等同于变量的部分字段
type FrameItemParam struct {
	FieldName     string  `json:"field_name" gorm:"column:field_name"`         // 字段名,变量名 只是个名字, 示例: 风速,压力
	Type          string  `json:"type" gorm:"column:type"`                     // 数据块类型, 可选范围 [包头, 帧长, 地址, 功能码, 数据部分, 校验, 帧尾]
	InputMethod   uint8   `json:"input_method" gorm:"column:input_method"`     // 方式 可选[0.直接输入 1.设置变量]
	Start         int     `json:"start" gorm:"column:start"`                   // 开始字节
	End           int     `json:"end" gorm:"column:end"`                       // 结束字节
	RawData       string  `json:"raw_data" gorm:"column:raw_data"`             // 原始十六进制字符串 (type为非"数据部分"和"校验" 时都是直接输入) (type为"校验"时自动计算, type为"数据部分"时按下面规则解析)
	CheckMethod   string  `json:"check_method" gorm:"column:check_method"`     // 校验方式 可选[ crc16 ,sum ] (当type是校验时设置)
	CheckStart    int     `json:"check_start" gorm:"column:check_start"`       // 校验开始位置   (当type是校验时设置)
	CheckEnd      int     `json:"check_end" gorm:"column:check_end"`           // 校验结束位置   (当type是校验时设置)
	Addr          string  `json:"addr" gorm:"column:addr"`                     // 设置的变量地址  (当input_type为1时设置, 也可以不设置, 如果不设置将自动创建变量)
	SpecType      string  `json:"spec_type" gorm:"column:spec_type"`           // 数据解析类型 (uint8, uint16, uint32, float32, float64, bool) ,具体类型根据粗类型和起始字节长度计算出
	RealSpecType  string  `json:"real_spec_type" gorm:"column:real_spec_type"` // 真类型
	Value         float64 `json:"value" gorm:"column:value"`                   // 解析值 (发送帧时可用)
	BoolBits      uint8   `json:"bool_bits" gorm:"column:bool_bits"`           // 多字节时的第几位
	Endian        string  `json:"endian" gorm:"column:endian"`                 // 大小端 [big,little]
	RatioOperator string  `json:"ratio_operator" gorm:"column:ratio_operator"` // 系数运算符 [*,/]
	Ratio         float64 `json:"ratio" gorm:"column:ratio"`                   // 系数 value 除之后的值
	Fe            uint8   `gorm:"column:fe" json:"fe"`                         // 是否科学计数法0.否 1.是
	Precision     uint8   `gorm:"column:precision" json:"precision"`           // 小数点保留几位
	MultiByte     uint8   `json:"multi_byte" gorm:"column:multi_byte"`         // data_type 为 bool 时 0.单字节 1.多字节
	//CreateTime  *string `json:"create_time" gorm:"create_time"`
	//UpdateTime  *string `json:"update_time" gorm:"update_time"`
}
